package com.itheima.dubbo.service;

import com.itheima.dubbo.User;
import com.itheima.dubbo.UserInterface;
import org.apache.dubbo.config.annotation.DubboService;
import org.apache.dubbo.config.annotation.Method;
import org.apache.dubbo.rpc.RpcContext;

/**
 * @作者 Azer
 * @创建日期 2021/12/10 19:40
 **/
//服务提供方
//注册到注册中心（被包扫描扫到）
//@DubboService(timeout = 1000) //超时时间配置 默认1s
//@DubboService(
//        methods = {//优先级最高
//                @Method(name = "hello",timeout = 9000),
//                @Method(name = "aa",timeout = 9000),
//                @Method(name = "add",retries = 0),

//        }
//)
//@DubboService(retries = 0)//重试次数 默认是2
//幂等性：无论发送多少次请求 结果一直（删除，查询，修改（但如果是+1 -1操作则不行），）
//非幂等性（新增）
//互联网项目中不建议设置重试 设置重试次数不要超过2次 （比如互联网中的秒杀 如果失败重试 给服务器的压力太大）
//@DubboService(version = "1.0.0")
@DubboService(loadbalance = "roundrobin")
//@DubboService
public class UserServiceImpl implements UserInterface {
    @Override
    public String hello(String username) {
        System.out.println(RpcContext.getContext().getAttachment("jwt"));

        try {
            Thread.sleep(2000L);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        return "hell Dubbo username:" + username;
    }

    @Override
    public User findUser(User userVO) {
        User user = new User();
        user.setName(userVO.getName());
        return user;
    }

//    public void aa() {
//
//    }
}
